package com.xuetang.mapper;

import com.xuetang.entity.DietRecipe;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 食谱Mapper接口
 */
public interface DietRecipeMapper {

    /**
     * 获取所有食谱列表
     * 
     * @return 食谱列表
     */
    List<DietRecipe> listAll();

    /**
     * 分页获取食谱列表
     * 
     * @param offset 偏移量
     * @param limit  限制数量
     * @return 食谱列表
     */
    List<DietRecipe> listByPage(@Param("offset") int offset, @Param("limit") int limit);

    /**
     * 根据餐类型获取食谱列表
     * 
     * @param mealType 餐类型
     * @param offset   偏移量
     * @param limit    限制数量
     * @return 食谱列表
     */
    List<DietRecipe> listByMealType(@Param("mealType") String mealType, @Param("offset") int offset,
            @Param("limit") int limit);

    /**
     * 根据ID获取食谱
     * 
     * @param id 食谱ID
     * @return 食谱信息
     */
    DietRecipe getById(@Param("id") Integer id);

    /**
     * 新增食谱
     * 
     * @param recipe 食谱信息
     * @return 影响行数
     */
    int insert(DietRecipe recipe);

    /**
     * 更新食谱
     * 
     * @param recipe 食谱信息
     * @return 影响行数
     */
    int update(DietRecipe recipe);

    /**
     * 删除食谱
     * 
     * @param id 食谱ID
     * @return 影响行数
     */
    int delete(@Param("id") Integer id);

    /**
     * 统计总数
     * 
     * @return 食谱总数
     */
    int count();

    /**
     * 统计指定餐类型的食谱总数
     * 
     * @param mealType 餐类型
     * @return 食谱总数
     */
    int countByMealType(@Param("mealType") String mealType);
}